Certain distributed computing environments, such as parallel sysplexes, today provide a nonvolatile shared storage device called a coupling facility, that includes multiple storage structures of either the cache or list type. These structures provide unique functions for the operating system and middleware products employed for the efficient operation of a parallel sysplex. For example, the cache structures provide directory structures and cross-invalidation mechanisms to maintain buffer coherency for multisystem databases, as well as a fast write medium for database updates. These are used by, for instance, the data sharing versions of DB2 and IMS, offered by International Business Machines Corporation, Armonk, N.Y.
The list structures provide many diverse functions. One such list structure function is to provide for high-performance global locking, and this function is exploited by such products as the IMS Resource Lock Manager (IRLM) and the Global Resource Serialization (GRS) function in OS/390, offered by International Business Machines Corporation, Armonk, N.Y. Another list structure function is to provide a message passing mechanism with storage for maintaining multiple messages on a per system basis and a mechanism for notifying a system of the arrival of new messages. This function is exploited by the XCS component of OS/390, which in turn is exploited by numerous multisystem applications for providing a means to pass messages between their various instances. A third list structure function is to provide for shared queue structures that can be ordered and accessed by LIFO/FIFO ordering, by key, or by name. Workload Manager (WLM), IMS Shared Message Queues and MQ Series, all offered by International Business Machines Corporation, Armonk, N.Y., are examples of exploiters of this feature. These three functions provide examples of list structure uses, but this is not an exhaustive list.
Various components of a parallel sysplex have been documented in numerous applications/patents, which are listed above and hereby incorporated herein by reference in their entirety. The capabilities defined in those applications/patents provide the basic system structure to create and manage single cache and list structure instances. Additionally, various of the patents and applications listed above provide extensions to the base functions of the parallel sysplex that support the creation and configuration of dual structure instances.
In many situations, a failure of the coupling facility that contains various structures requires significant recovery actions to be taken by the owning applications. For example, for database caches and queues, this may require using backup log data sets and/or tapes. This is a time-consuming process that results in a loss of access to the application during the recovery operation. Other structures, such as lock tables, may require reconstruction of partial lock tables from in-storage copies along with failures of in-flight transactions. Still other structures, such as message-passing structures, may lose all data and require re-entry from the application. So, there is a proliferation of diverse recovery schemes with different recovery times and impacts. Add to that the fact that failure of a coupling facility results in all resident structures failing, with recovery actions occurring concurrently. This can cause serious disruptions in the parallel sysplex.
Thus, a need exists for a parallel sysplex that has less disruptions. In particular, a need exists for a high-availability coupling facility, which improves on the recovery times and impacts of existing recovery techniques, while also provides for a consistent recovery design across various structure types.
As a particular example, a need exists for a capability that duplexes structures in two separate coupling facilities.
Many of the above-incorporated, co-filed patent applications teach this capability for duplexing structures in two separate coupling facilities. As a result of these teachings, a further need exists for facilitating testing of such duplexed structures.
Software testing is an ongoing task in computer software program development and maintenance which requires a large portion of development time, computer and human resources, and effort. Software may include the development of an entirely new application or program, or the addition of a new feature to an existing application or system. Software maintenance activities generally include the correction of reported problems.
Testing is performed with a goal of verifying the correct functioning of new software and modifications to existing software. Generally, software testing accompanies even minor code modifications or enhancements to ensure correctness. Verifying the correctness of software may involve numerous tasks ranging from ensuring coding syntax through successful compilation, to checking the execution results by examining the output of a software program.
Generally, as complexity of software programs increases, the amount of testing and the need for efficient testing increases as well. As one example, in view of the teachings of the above-incorporated applications, techniques are now needed to facilitate testing of a duplexed structure, such as a duplexed coupling facility structure.